package com.carbon.carbonmanager.mapper;

import com.carbon.carbonmanager.model.*;
import com.carbon.carbonmanager.unit.Pager;
import org.apache.catalina.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 用户模块功能方法接口
 * */
@Mapper
@Component
public interface UserMapper {
    /**
     * 将用户注册邮箱和生成的注册码添加到数据库中
     * */
    public Integer addRegCode(UserRegCodeInfo userRegCodeInfo);

    /**
     * 删除已有邮箱的验证码，以便数据表中只保存唯一的验证码
     * */
    public Integer delRegCode(UserRegCodeInfo userRegCodeInfo);

    /**
     * 注册成功后，清空当前用户生成的注册码
     * */
    public Integer clearRegCode(UserInfo userInfo);

    /**
     * 注册用户验证邮箱与注册码是否匹配
     * */
    public UserRegCodeInfo validateRegCode(UserInfo userInfo);

    /**
     * 验证用户信息表中，注册用户的邮箱是否被使用过
     * */
    public UserInfo validateEmailIsExisted(UserRegCodeInfo userRegCodeInfo);

    /**
     * 验证用户名是否存在
     * */
    public UserInfo validateUsernameIsExisted(UserInfo userInfo);

    /**
     * 添加新用户
     * */
    public Integer insertUser(UserInfo userInfo);

    /**
     * 用户登录功能
     * */
    public UserInfo validateUser(UserInfo userInfo);

    /**
     * 用户登录功能
     * */
    public UserInfo validateUserOperation(UserInfo userInfo);

    /**
     * 登录成功后，修改登录时间
     * */
    public Integer updateLoginTime(UserInfo userInfo);

    /**
     * 查询所有用户信息
     * */
    public List<UserInfo> getAllUser();

    /**
     * 查询所有用户信息，分页数据1
     * 根据分数数据取出当前页面数据内容
     * */
    public List<UserInfo> getAllUserPagerData(Pager pager);

    /**
     * 查询所有用户信息，分页数据2
     * 取出当前数据总条数
     * */
    public Integer getAllUserPagerDataTotal();

    /**
     * 获取用户角色列表
     * */
    public List<UserRoleInfo> getUserRoleList();

    /**
     * 获取用户企业类型
     * */
    public List<UserClassInfo> getUserClassList();

    /**
     * 根据用户id修改用户角色
     * */
    public Integer updateUserRoleByUserId(UserInfo userInfo);
}
